Despite all of the verification and testing of software during development, every program fault, error, or bug may not be eliminated. Oftentimes when application software is released for sales to customers/users, additional bugs may be found due to the manner in which a customer or user is using the application software or the infinite number of user input variables that may be used. Sometimes, but not often, user input data may be in error and cause a program fault or crash. Occasionally, a user's computer system hardware has a problem that causes a program fault or crash.
Previously when software faulted or crashed, a core dump of memory at the time of the fault or crash was available. However, the core dump only provided a snap shot of the state of the computer memory at the time of the crash. Little prior information leading up to the software fault or crash was available to assist in debug.
Additionally in the design of integrated circuits (ICs), the fault or crash may occur hours after initial execution of the software program. The software developers/programmers often have to wait for the software program to execute for hours before reaching the problem that caused the fault or crash.
Moreover, extensive information regarding the design of an integrated circuit (IC) is often required from a user to debug a fault or crash that occurs during execution of the integrated circuit design software. The complete netlist of the entire integrated circuit design and cell library are often required to debug the program. The top level netlist files of an entire integrated circuit are typically unwieldy due to their large file sizes. Additionally, users are often reluctant to give out such extensive information to the software developer because of its importance and any trade secret information that may be contained therein.
Thus, it is desirable to simplify the software debug process for integrated circuit design software.